package com.htthorizon.system.api.model;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import javax.validation.constraints.NotNull;
import java.util.Date;

/**
 * 模型信息对象 model_info
 *
 * @author mark
 * @date 2023-11-15
 */
public class ModelInfoReq
{
    private static final long serialVersionUID = 1L;

    private Long id;

    /** 数据源ID */
    @ApiModelProperty(name = "数据源不能为空")
//    @NotNull(message = "数据源不能为空")
    private Long sourceId;

    /** 模型编码 */
    @ApiModelProperty(name = "模型编码")
    private String modelCode;

    /** 模型名称 */
    @ApiModelProperty(name = "模型名称")
    @NotNull(message = "模型名称不能为空")
    private String modelName;

    /** 模型英文名称 */
    @ApiModelProperty(name = "模型英文名称")
//    @NotNull(message = "模型英文名称不能为空")
    private String modelNameEn;

    /** 模型分类 */
    @ApiModelProperty(name = "模型分类")
    private String modelType;

    /** 模型所属专业域 */
    @ApiModelProperty(name = "模型所属专业域")
    @NotNull(message = "模型所属专业域不能为空")
    private String specialityCode;

    /** 来源系统 */
    @ApiModelProperty(name = "来源系统")
    private String sourceSystem;

    /** 模型创建时间 */
    @JsonFormat(pattern = "yyyy")
    @ApiModelProperty(name = "模型创建时间")
    private Date modelCreateDate;

    /** 模型负责人 */
    @ApiModelProperty(name = "模型负责人")
    private String modelAuthor;

    /** 模型状态1在用2弃用3开发中4未开发 */
    @ApiModelProperty(name = "模型状态1在用2弃用3开发中4未开发")
    private String modelStatus;

    /** 状态:0正常-1已删除 */
    @ApiModelProperty(name = "状态:0正常-1已删除")
    private Integer status;

    /** 简介 */
    @ApiModelProperty(name = "简介")
    private String profile;

    /** 附件 */
    @ApiModelProperty(name = "附件")
    private String fileUrl;

    /** 创建者 */
    @ApiModelProperty(name = "创建者")
    private String createBy;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(name = "创建时间")
    private Date createTime;

    /** 更新者 */
    @ApiModelProperty(name = "更新者")
    private String updateBy;

    /** 更新时间 */
    @ApiModelProperty(name = "更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    /** 备注 */
    @ApiModelProperty(name = "备注")
    private String remark;

    private Integer alarmType;

    public Integer getAlarmType() {
        return alarmType;
    }

    public void setAlarmType(Integer alarmType) {
        this.alarmType = alarmType;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public void setSourceId(Long sourceId)
    {
        this.sourceId = sourceId;
    }

    public Long getSourceId()
    {
        return sourceId;
    }
    public void setModelCode(String modelCode)
    {
        this.modelCode = modelCode;
    }

    public String getModelCode()
    {
        return modelCode;
    }
    public void setModelName(String modelName)
    {
        this.modelName = modelName;
    }

    public String getModelName()
    {
        return modelName;
    }
    public void setModelNameEn(String modelNameEn)
    {
        this.modelNameEn = modelNameEn;
    }

    public String getModelNameEn()
    {
        return modelNameEn;
    }
    public void setModelType(String modelType)
    {
        this.modelType = modelType;
    }

    public String getModelType()
    {
        return modelType;
    }
    public void setSpecialityCode(String specialityCode)
    {
        this.specialityCode = specialityCode;
    }

    public String getSpecialityCode()
    {
        return specialityCode;
    }
    public void setSourceSystem(String sourceSystem)
    {
        this.sourceSystem = sourceSystem;
    }

    public String getSourceSystem()
    {
        return sourceSystem;
    }
    public void setModelCreateDate(Date modelCreateDate)
    {
        this.modelCreateDate = modelCreateDate;
    }

    public Date getModelCreateDate()
    {
        return modelCreateDate;
    }
    public void setModelAuthor(String modelAuthor)
    {
        this.modelAuthor = modelAuthor;
    }

    public String getModelAuthor()
    {
        return modelAuthor;
    }
    public void setModelStatus(String modelStatus)
    {
        this.modelStatus = modelStatus;
    }

    public String getModelStatus()
    {
        return modelStatus;
    }
    public void setStatus(Integer status)
    {
        this.status = status;
    }

    public Integer getStatus()
    {
        return status;
    }
    public void setProfile(String profile)
    {
        this.profile = profile;
    }

    public String getProfile()
    {
        return profile;
    }

    public String getCreateBy() {
        return createBy;
    }

    public void setCreateBy(String createBy) {
        this.createBy = createBy;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public String getUpdateBy() {
        return updateBy;
    }

    public void setUpdateBy(String updateBy) {
        this.updateBy = updateBy;
    }

    public Date getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public String getFileUrl() {
        return fileUrl;
    }

    public void setFileUrl(String fileUrl) {
        this.fileUrl = fileUrl;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
                .append("sourceId", getSourceId())
                .append("modelCode", getModelCode())
                .append("modelName", getModelName())
                .append("modelNameEn", getModelNameEn())
                .append("modelType", getModelType())
                .append("specialityCode", getSpecialityCode())
                .append("sourceSystem", getSourceSystem())
                .append("modelCreateDate", getModelCreateDate())
                .append("modelAuthor", getModelAuthor())
                .append("modelStatus", getModelStatus())
                .append("status", getStatus())
                .append("remark", getRemark())
                .append("profile", getProfile())
                .append("createBy", getCreateBy())
                .append("createTime", getCreateTime())
                .append("updateBy", getUpdateBy())
                .append("updateTime", getUpdateTime())
                .toString();
    }
}
